package cn.saltice.idempotence.idem.warpper;

import cn.saltice.idempotence.idem.exception.IdempotentException;

/**
 * @program: idempotence
 * @description: Runnable包装
 * @author: Mr.Liu
 * @create: 2020-10-06 21:06
 **/
public interface IdempotentRunnable extends Runnable{
    /**
     * 包装
     * @param key 幂等键
     * @param ex 异常
     */
    default void run(String key, IdempotentException ex){
        runTask(key,ex);
    }

    /**
     * 任务体
     * @param key 幂等键
     * @param ex 异常
     */
    public abstract void runTask(String key, IdempotentException ex);

    /**
     * 实现父类的
     * 不用的方法
     */
    @Override
    @Deprecated
    default void run() {

    }
}
